package org.pathlet.core;


/**
 *
 * 资源实例事件监听接口。
 *
 *
 * @author Charlie Zhang
 *
 *
 */
public interface ResourceInstanceEvent {

	/**
	 * 实现此函数可实现资源实例化过程的 around 拦截处理。
	 *  实现方法中需要调用processor.process(space)方法来进行实际的资源实例化处理。
	 *  通过processor.process(space)方法返回的是资源实例化对象，可在processor.process(space)方法前后进行前置或后置的处理。
	 * @param processor
	 * @param space
	 * @param resource
	 * @return
	 */
	Object instanceTarget(ResourceInstanceProcessor processor, InstanceSpace space, PathletResource resource);

	/**
	 * 当对InstanceSpace中的资源实例进行缓存清理时，会调用此方法。
	 * 此方法用于清理当前ResourceInstanceEvent中的缓存对象。
	 *
	 * @param scope  对应的生命周期范围。
	 * @param matchPattern 清理时的过滤条件，如果为null则表示清理所有缓存对象。
	 */
	public void flush(String scope, PathPattern matchPattern);

}
